#pragma once

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include "Queue.h"

typedef struct BTNode
{
	int data;
	struct BTNode* left;
	struct BTNode* right;
}BTNode;

void PreOrder(BTNode* root);

void InOrder(BTNode* root);

void PostOrder(BTNode* root);

void LevelOrder(BTNode* root);

int BTSize(BTNode* root);

int BTLeafSize(BTNode* root);

int BTLevelKSize(BTNode* root,int k);

int BTDepth(BTNode* root);

BTNode* BTFind(BTNode* root, int x);

bool BTComplete(BTNode* root);

void BTDestroy(BTNode** pproot);